// 03-array-method.js:  模拟常用高阶函数：map, every, some


//map：对数组中每一个元素进行遍历，并对数组中每一个元素进行处理，然后把处理结果存储到一个新的数组进行返回。

const map = (array, fn) => {
    var results = [];
    for (var value of array) {
        results.push(fn(value));
    }
    return results;
}

//测试：求每个元素的平方
var arr = [1, 2, 3, 4];
arr = map(arr, v => v * v);
console.log('map', arr);

//every：判断数组中的每一个元素是否 都满足我们的指定条件

const every = (array, fn) => {

    var result = true;

    for (var value of array) {
        result = fn(value);
        if (!result) break;
    }

    return result;

}

//测试：检测每一个元素是否都超过10
var arr = [9, 12, 14];
var r = every(arr, v => v > 10);
console.log('every', r);

//some：用来检测数组中的元素是否 有一个满足我们指定的条件

var some = (array, fn) => {
    var result = false;
    for (var value of array) {
        result = fn(value);
        if (result) break;
    }
    return result;
}

//测试：数组中是否有偶数
var arr = [1, 3, 5, 9];
var r = some(arr, v => v % 2 === 0);
console.log('some', r);